The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for a bandwidth-efficient virtual machine image delivery.
A virtual machine (VM) is a software implementation of a machine (i.e. a computer) that executes programs like a physical machine. Virtual machines are separated into two major classifications, based on their use and degree of correspondence to any real machine:                1. A system virtual machine provides a complete system platform which supports the execution of a complete operating system. The system virtual machine usually emulates an existing architecture and is built with either the purpose of providing a platform to run programs where the real hardware is not available for use or of having multiple instances of virtual machines lead to more efficient use of computing resources, both in terms of energy consumption and cost effectiveness, or both.        2. A process virtual machine is designed to run a single program, which means that it supports a single process. Such process virtual machines are usually closely suited to one or more programming languages and built with the purpose of providing program portability and flexibility. An essential characteristic of a process virtual machine is that the software running inside is limited to the resources and abstractions provided by the virtual machine, i.e. the process cannot break out of the associated virtual environment.        
Virtual Machine Images (VMIs) are utilized to create virtual machines (VMs) on a host system. That is, rather than writing the code for VM, a user may find an existing VMI that meets the user's VM requirement and utilizes that identified VMI as the bases for their VM. However, VMI are generally large files (usually ranging in size from a couple of GBytes to hundreds of GBytes) and usually exist in the realm of datacenters. Host machines (physical servers) in a datacenter usually access VMIs through a file system, with the file-system being mounted on a local disk or on a remote disk accessed through a network protocol. The VMI may be composed of an operating system (OS) image, middleware, applications, or the like.